package com.xigua._树;

import com.xigua.TreeNode;

/**
 * @author LiRongHua
 * @Title: ${file_name}
 * @Package ${package_name}
 * @Description: 输入两棵二叉树A和B，判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构， 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:

     3
    / \
   4   5
  / \
 1   2
给定的树 B：

   4 
  /
 1
返回 true，因为 B 与 A 的一个子树拥有相同的结构和节点值。
 */
public class _剑指_Offer26_树的子结构 {

    public boolean isSubStructure(TreeNode A, TreeNode B) {
        return A != null && B!= null && (helper(A,B) || isSubStructure(A.left,B)|| isSubStructure(A.right,B));
    }

    public boolean helper(TreeNode A,TreeNode B){
        if (B == null) return true;
        if (A == null || A.val != B.val) return false;
        return helper(A.left,B.left) && helper(A.right,B.right);
    }


}
